home *** CD-ROM | disk | FTP | other *** search
/ Precision Software Appli…tions Silver Collection 4 / Precision Software Applications Silver Collection Volume 4 (1993).iso / stats / chadyn.exe / YPRINTER.C < prev    next >
Text File  |  1988-11-29  |  3KB  |  172 lines

  1. /******************** YPRINTER.C: codes for EPSON printers *******************/
  2. /*********************** (C) 1986,7,8 by JAMES A. YORKE **********************/
  3.  
  4.  
  5. #include "yinclud.h"
  6. char    printstatus;        /* given a value by printerStatus() */
  7. #ifdef MS
  8. #include <dos.h>
  9. #define PUTC(x,y)    putc(x,y);fflush(y)
  10. #else
  11. #define PUTC(x,y)    putc(x,y)
  12. #endif
  13.  
  14.  
  15. carriage_return() {
  16.     C = 13;            /* carriage return */
  17.     PUTC(C, stdprn);
  18. }
  19.  
  20. print_graphics_mode() {
  21.     C = 27;
  22.     PUTC(C, stdprn);    /* sends character C to printer */
  23.     C = 'L';        /* 960 bit image graphics mode */
  24.     PUTC(C, stdprn);
  25.     C = corecols % 256;
  26.     PUTC(C, stdprn);
  27.     C = corecols / 256;
  28.     PUTC(C, stdprn);
  29. }
  30.  
  31. selectPrinterColor(col)    /* col is color number */
  32. int     col;
  33. {
  34.     C = ESC;
  35.     PUTC(C, stdprn);
  36.     C = 'r';
  37.     PUTC(C, stdprn);
  38.     C = col;
  39.     PUTC(C, stdprn);
  40. }
  41.  
  42.  
  43. iprint(f)        /* initializes the printer spacing for graphics 
  44.                 */
  45. int     f;
  46. {
  47.     C = 27;
  48.     PUTC(C, stdprn);
  49.     C = '3';
  50.     PUTC(C, stdprn);
  51.     C = f;
  52.     PUTC(C, stdprn);
  53. }
  54.  
  55. i12print() {            /* initializes the printer for text */
  56.     C = 27;
  57.     PUTC(C, stdprn);
  58.     C = '3';
  59.     PUTC(C, stdprn);
  60.     C = 36;
  61.     PUTC(C, stdprn);
  62.  
  63. }
  64.  
  65. on_dbl_wdth() {
  66.     C = 27;
  67.     PUTC(C, stdprn);
  68.     C = 'W';
  69.     PUTC(C, stdprn);
  70.     C = 1;
  71.     PUTC(C, stdprn);
  72. }
  73.  
  74. off_dbl_wdth() {
  75.     C = 27;
  76.     PUTC(C, stdprn);
  77.     C = 'W';
  78.     PUTC(C, stdprn);
  79.     C = 0;
  80.     PUTC(C, stdprn);
  81. }
  82.  
  83. line_feed() {            /* printer command */
  84.     C = 10;            /*  line feed to printer */
  85.     PUTC(C, stdprn);
  86. }
  87.  
  88. #ifdef MS
  89. #include <sys/types.h>
  90. #include <sys/timeb.h>
  91. double  timeofday()
  92. {
  93.     struct timeb timestruc;
  94.     ftime(×truc);
  95.     return((double) timestruc.time + (double) timestruc.millitm / 1000.0);
  96. }
  97. #endif                /* MS */
  98.  
  99. #ifdef UNIX
  100. /* The Unix version of timeofday() uses the TIMES(2) system call to
  101.  * get the total time used by the program.  We ignore its return value
  102.  * because differing implementations return either 0 or the time since
  103.  * system startup.  This version assumes that the user and child times
  104.  * are given in units of Hertz (1/60 sec).
  105.  * The return value of this function is the total time used by the program
  106.  * so far.  It is not used as a wall clock in the X window version of the
  107.  * program.
  108.  */
  109. #include <sys/types.h>
  110. #include <sys/times.h>
  111. double    timeofday()
  112. {
  113.     struct tms buffer;
  114.     double    total;
  115.     long    times();
  116.  
  117.     (void) times(&buffer);
  118.     total = buffer.tms_utime + buffer.tms_stime + buffer.tms_cutime +
  119.         buffer.tms_cstime;
  120.     return(total / 60.0);
  121. }
  122. #endif
  123.  
  124. printChar()
  125. {
  126. #ifdef MS
  127.     union REGS regs;
  128.     regs.h.ah = 0;
  129.     regs.h.al = C;
  130.     regs.x.dx = 0;
  131.     int86(23, ®s, ®s);/* BIOS interrupt 17H; */
  132. #endif
  133. }
  134.  
  135.  
  136. int printerStatus(num) /* initializes the printer and returns status byte;
  137.         meaning of bit:
  138.         7    printer busy
  139.         6    Acknowledge
  140.         5    out of paper
  141.         4    selected
  142.         3     I/O error
  143.         2,1    not used
  144.         0     time out        */
  145.     int num;/* if num == 1, initializes and fetches status byte;
  146.            if num == 2, just fetches status byte */
  147. {
  148.     int statuus;
  149. #ifdef MS
  150.     union REGS regs;
  151.     regs.h.ah = num;
  152. /*    regs.h.al = C;*/
  153.     regs.x.dx = 0;
  154.     int86(23, ®s, ®s);/* BIOS interrupt 17H; */
  155.     printstatus = regs.h.ah;
  156. #endif
  157.  
  158. #ifdef DESMET
  159.     printstatus = num;
  160. #asm
  161.     MOV    DX,0000H
  162.     MOV    AH,printstatus_
  163.     INT    17H
  164.     MOV    printstatus_,AH
  165. #
  166. #endif /* DESMET */
  167.     statuus = printstatus;
  168.     return(statuus);
  169. }
  170.  
  171.  
  172.